"""
@Author  : 康帅
@Time    : 2021/3/19 10:02
@Function: 外观模式
"""

"""
什么是外观模式：
为子系统中的一组接口提供一个一致的界面称为外观模式，外观模式定义了一个高层接口，这个接口使得这一子系统更容易使用。

设计要点：
1.外观角色（Façade）：为子系统封装统一的对外接口，如同子系统的门面。
这个类一般不负责具体的业务逻辑，只是一个委托类，具体的业务逻辑由子系统完成。
2.系统（SubSystem）：由多个类组成的具有某一特定功能的子系统。可以是第三方库，
也可以是自己的基础库，还可以是一个子服务，为整个系统提供特定的功能或服务。

优点：
1.实现了子系统与客户端之间的松耦合关系，这使得子系统的变化不会影响调用它的客户端。
2.简化了客户端对子系统的使用难度，客户端（用户）无须关心子系统的具体实现方式，而只需要和外观进行交互即可。
3.为不同的用户提供了统一的调用接口，方便了系统的管理和维护。

缺点：
1.因为统一了调用的接口，降低了系统功能的灵活性。

应用场景：
1.要为一个复杂子系统提供一个简单接口时。
2.客户程序与多个子系统之间存在很大的依赖性时。引入外观类将子系统与客户以及其他子系统解耦，可以提高子系统的独立性和可移植性。
3.在层次化结构中，可以使用外观模式定义系统中每一层的入口，层与层之间不直接产生联系，而通过外观类建立联系，降低层之间的耦合度。
"""
